/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tv.starfu.sequencer.matrix;

import de.lessvoid.nifty.controls.NiftyControl;

/**
 * A button representing a step in a pattern.
 * A button stores its step/channel/state data.
 * @author nia radical
 */
public interface MatrixButton extends NiftyControl {
    /**
     * Click/toggle this button
     */
    void activate();
    
    /**
     * Returns the element Id
     * @return id
     */
    String getID();
    
    /**
     * Sets the cursor icon
     */
    void setCursor();
    
    /**
     * Set button state
     * @param state 
     */
    void setState(int state);  
    
    /**
     * Set step(x) number
     * @param step
     */
    void setStep(int step);
    
    /**
     * Set channel(y) number
     * @param channel 
     */
    void setChannel(int channel);
    
    /**
     * Get current button state
     * @return state 
     */
    int getState();
    
    /**
     * Get current button channel
     * @return channel
     */
    int getChannel();
    
    /**
     * Get current button step
     * @return step
     */
    int getStep();
    
}
